package cn.org.farseer.sweetftp.manager.site;

import java.util.List;

import cn.org.farseer.sweetftp.core.support.IPersistentOperationSupport;


/**
 * 作者 : [Farseer.org] 简洋  —  2009-7-28
 * 
 * 项目 : [Farseer.org] SweetFTP
 */
public interface ISiteManager extends IPersistentOperationSupport
{
	/**
	 * 得到所有的站点组。
	 * @return
	 */
	public List<SiteGroup> getAllSiteGroup();

	/**
	 * 得到所有的站点。
	 * @return
	 */
	public List<Site> getAllSite();
	
	/**
	 * 根据站点组得到站点。
	 * @param group
	 * @return
	 */
	public List<Site> getSiteBySiteGroup(SiteGroup group);
	
	/**
	 * 创建一个站点组。
	 * @param group 站点组对象
	 * @return
	 */
	public SiteGroup createSiteGroup(SiteGroup group);
	
	/**
	 * 创建一个站点组。
	 * @param name 站点组名称
	 * @param note  站点组说明
	 * @return
	 */
	public SiteGroup createSiteGroup(String name,String note);
	
	/**
	 * 创建一个站点。
	 * @param site
	 * @return
	 */
	public Site createSite(Site site);
	
	/**
	 * 创建一个站点。放入指定的站点组。
	 * @param name
	 * @param url
	 * @param username
	 * @param password
	 * @param port
	 * @param note
	 * @param siteGroup 如果传null，放到默认站点组。
	 * @return
	 */
	public Site createSite(String name,String url,String username,String password,String port,String note,SiteGroup siteGroup);
	

	
	/**
	 * 修改站点组信息。
	 * @param siteGroup
	 * @return
	 */
	public SiteGroup editSiteGroup(SiteGroup siteGroup);
	
	/**
	 * 修改站点组信息。
	 * @param groupId
	 * @param name
	 * @param note
	 * @return
	 */
	public SiteGroup editSiteGroup(String groupId,String name,String note);
	
	/**
	 * 修改站点信息。
	 * @param site
	 * @return
	 */
	public Site editSite(Site site);
	
	
	/**
	 * 修改站点信息。		
	 * @param id
	 * @param name
	 * @param url
	 * @param username
	 * @param password
	 * @param port
	 * @param note
	 * @param siteGroup 
	 * @return
	 */
	public Site editSite(String id,String name,String url,String username,String password,String port,String note,SiteGroup siteGroup);
	
	/**
	 * 删除站点组。
	 * @param siteGroup
	 * @return
	 */
	public boolean deleteSiteGroup(SiteGroup siteGroup);
	
	/**
	 * 根据唯一标识删除站点组。
	 * @param id
	 * @return
	 */
	public boolean deleteSiteGroup(String id);
	
	/**
	 * 删除站点。
	 * @param site
	 * @return
	 */
	public boolean deleteSite(Site site);
}
